// -------------------------------------------------------------------------------------------------

#if !defined(  __parser_test_h__ )
#define __parser_test_h__

#include <sea_statemachine>

using namespace sea;

class TestParser : public StateMachine
{
public:
    TestParser( ) : StateMachine( STATEMACHINE_NAME ){ }

    /*  0 */ ACT( TestParser, init );
    /*  1 */ ACT( TestParser, ParseBinarySm );
    /*  2 */ ACT( TestParser, readString );
    /*  3 */ ACT( TestParser, getLiteral );
    /*  4 */ ACT( TestParser, createStateMachine );
    /*  5 */ ACT( TestParser, storeExecMode );
    /*  6 */ ACT( TestParser, createState );
    /*  7 */ ACT( TestParser, storeHeartBeatInterval );
    /*  8 */ ACT( TestParser, storeHeartBeats );
    /*  9 */ ACT( TestParser, createEventRecord );
    /* 10 */ ACT( TestParser, storeEvent );
    /* 11 */ ACT( TestParser, storeAction );
    /* 12 */ ACT( TestParser, storeNextState );
    /* 13 */ ACT( TestParser, endOfState );
    /* 14 */ ACT( TestParser, complete );
    /* 15 */ ACT( TestParser, error );
    /* 16 */ ACT( TestParser, resolveNextStates ) ;

    /*  0 */ EVENT_INT( TestParser, Ev_Int_InitOk );
    /*  1 */ EVENT_INT( TestParser, Ev_Int_InitBinaryOk );
    /*  2 */ EVENT_INT( TestParser, Ev_Int_InitFailed );
    /*  3 */ EVENT_INT( TestParser, Ev_Int_ParseError );
    /*  4 */ EVENT_INT( TestParser, Ev_Int_Eol );
    /*  5 */ EVENT_INT( TestParser, Ev_Int_Eof );
    /*  6 */ EVENT_INT( TestParser, Ev_Int_NotEmptyString );
    /*  7 */ EVENT_INT( TestParser, Ev_Int_GotNumber );
    /*  8 */ EVENT_INT( TestParser, Ev_Int_GotName );
    /*  9 */ EVENT_INT( TestParser, Ev_Int_GotOpenBracket );
    /* 10 */ EVENT_INT( TestParser, Ev_Int_GotCloseBracket );
    /* 11 */ EVENT_INT( TestParser, Ev_Int_ResolveOk );
    /* 12 */ EVENT_INT( TestParser, Ev_Int_ParseWarning );
};


void test_state_machine_parser( );

#endif

// -------------------------------------------------------------------------------------------------
